# 高阶函数
# 接收函数作为参数，或者将函数作为返回值的函数是高阶函数
# 当我们使用一个函数作为参数时，实际上是将指定的代码传递进了目标函数

#  找出一个整数是否是3的倍数

l = [1,2,3,4,5,6,7,8,9,10]
# def fu(i):
#     return i%3==0
#
# def function(fun,list):
#     new_list = []
#     for i in list:
#         if fun(i):
#             new_list.append(i)
#     return new_list
#
# print(function(fu,l))

funx = lambda i : i>5
# 匿名函数 lambda 函数表达式 （语法糖）
#   lambda函数表达式专门用来创建一些简单的函数，他是函数创建的又一种方式
#   语法：lambda 参数列表 : 返回值
#   匿名函数一般都是作为参数使用，其他地方一般不会使用

r = filter(funx ,l)
print(list(r))

r = map(lambda i : i**2,l)
print(list(r))


l = ['bb','aaaa','c','ddddddddd','fff']
# l.sort(key = len)

s = sorted(l,key=len)
print(s)
print(l)